<?
    class CM_Validate_Decorator extends Zend_Validate_Abstract
    {
        /**
         * Контейнер для экземпляра Zend_Validate_Interface.
         *
         * @var Zend_Validate_Interface
         */
        private $validate_interface;

        /**
         * Значение параметра label элемента формы.
         *
         * @var string
         */
        private $field_label;


        /**
         * __construct
         *
         * 1) Устанавливаем параметр  $this->field_label равный значению параметра label элемента формы.
         * 2) Получаем экземпляр Zend_Validate_Interface.
         *
         * @param Zend_Validate_Interface $validate_interface
         * @param $field_label
         */
        public function __construct(Zend_Validate_Interface $validate_interface, $field_label)
        {
            $this->field_label = $field_label;
            $this->validate_interface = $validate_interface;
        }


        /**
         * isValid
         *
         * Вызываем метод isValid() декорируемого класса Zend_Validate_Abstract.
         *
         * @param mixed $value
         * @param null $context
         * @return bool
         */
        public function isValid($value, $context = null)
        {
            return $this->validate_interface->isValid($value, $context);
        }


        /**
         * getMessages
         *
         * Добавляем значение параметра $this->field_label в сообщение об ошибке валидации.
         *
         * @return array|mixed
         */
        public function getMessages()
        {
            return str_replace("%field_label%", $this->field_label, $this->validate_interface->getMessages());
        }
    };
?>